/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package model.creature;

/**
 * Creatures that can be upgraded must implement this class.
 */
public interface UpgradableCreature {

  /**
   * Increments this creature's level
   * Assume that player has paid the appropriate amount of money
   */
  public abstract void upgrade();

  /**
   * Returns the level of this creature
   */
  public abstract int getLevel();

  /**
   * Returns true iff creature can be upgraded again now
   * It's current level is given in getLevel()
   */
  public abstract boolean canUpgrade();

  /**
   * Retrieves the price to upgrade this creature's level
   * It's current level is given in getLevel()
   * @requires canUpgrade()
   */
  public abstract int getUpgradeCost();

}
